package cc.rengu.igas.acct.common.dao;

import cc.rengu.igas.acct.common.entity.AcctDetail;
import cc.rengu.oltp.service.model.BizException;
import cc.rengu.oltp.utility.util.DbsUtil;

/**
 * 账户模块数据库Sequence操作接口
 *
 * @author lizhangtao
 * @version 1.0
 * @date 2020/4/9
 */
public interface AcctSequenceMapper {

    /**
     * 获取账户号Sequence
     *
     * @return Sequence字符串
     * @throws BizException 顶层异常
     */
    String getNextAcctNoSequenceNo() throws BizException;

    /**
     * 获取账户号Sequence
     *
     * @param dbsUtil 数据库操作句柄
     * @return Sequence字符串
     * @throws BizException 顶层异常
     */
    String getNextAcctNoSequenceNo(DbsUtil dbsUtil) throws BizException;

    /**
     * 获取交易流水号Sequence
     * 流水号=账户类型2位 + 14位系统时间 + 10位序列号 + 6位随机数
     *
     * @param dbsUtil    数据库操作句柄
     * @param acctDetail 账户记账明细实体，需要创建日期时间yyyy-MM-dd HH:mm:ss.SSS，账户类型
     * @return Sequence字符串
     * @throws BizException 顶层异常
     */
    String getNextAcctSeqNumSequenceNo(AcctDetail acctDetail, DbsUtil dbsUtil) throws BizException;
}
